package middleware

import (
	"net/http"
)

// CORS 跨域中间件，支持指定域名的跨域请求
func CORS(next http.Handler) http.Handler {
	return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
		// 允许的前端域名（生产环境需替换为实际域名）
		allowedOrigins := map[string]bool{
			"http://localhost:3000": true, // 本地开发环境
			"https://image.wps.cn":  true, // 生产环境域名
		}

		// 获取请求源
		origin := r.Header.Get("Origin")
		if origin != "" {
			if allowedOrigins[origin] {
				w.Header().Set("Access-Control-Allow-Origin", origin)
			}
		}

		// 允许的请求方法
		w.Header().Set("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS")
		// 允许的请求头
		w.Header().Set("Access-Control-Allow-Headers", "Content-Type, Authorization, X-Requested-With")
		// 允许携带Cookie
		w.Header().Set("Access-Control-Allow-Credentials", "true")
		// 预检请求缓存时间（秒）
		w.Header().Set("Access-Control-Max-Age", "86400")

		// 处理预检请求
		if r.Method == http.MethodOptions {
			w.WriteHeader(http.StatusNoContent)
			return
		}

		// 继续处理请求
		next.ServeHTTP(w, r)
	})
}
